/**
 * fileManager.js - 交互式文件管理
 * 要求：
 * 1) 启动后使用 process.stdin 接收用户输入
 * 2) 操作流程：
 *    - 输入：mkdir <dirname>  创建目录
 *    - 输入：touch <filename> 在上一步创建的目录里创建文件，写入 "hello node,"
 *    - 输入：delete <filename> 或直接输入文件名 删除该文件，删除成功后退出
 */

const fs = require('fs');
const path = require('path');
const readline = require('readline');

const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});

let createdDir = '';

function askCreateDir() {
  rl.question('请输入要创建的文件夹：', async (answer) => {
    const match = answer.trim().match(/^mkdir\s+(\S+)$/i);
    if (!match) {
      console.log('格式：mkdir <目录名>');
      return askCreateDir();
    }
    createdDir = match[1];
    try {
      fs.mkdirSync(path.join(__dirname, createdDir), { recursive: true });
      console.log('文件目录创建成功！！');
      askCreateFile();
    } catch (err) {
      console.error('创建目录失败：', err.message);
      askCreateDir();
    }
  });
}

function askCreateFile() {
  rl.question('请输入要创建的文件：', (answer) => {
    const match = answer.trim().match(/^touch\s+(\S+)$/i);
    if (!match) {
      console.log('格式：touch <文件名>');
      return askCreateFile();
    }
    const filename = match[1];
    const filePath = path.join(__dirname, createdDir, filename);
    fs.writeFile(filePath, 'hello node,', 'utf8', (err) => {
      if (err) {
        console.error('文件创建失败：', err.message);
        return askCreateFile();
      }
      console.log('文件创建成功');
      askDeleteFile(filename);
    });
  });
}

function askDeleteFile(defaultName) {
  rl.question('请输入要删除的文件：', (answer) => {
    const input = answer.trim();
    // 兼容两种输入：delete <name> 或 直接 <name>
    let target = input;
    const delMatch = input.match(/^delete\s+(\S+)$/i);
    if (delMatch) target = delMatch[1];
    if (!target) {
      console.log('请输入要删除的文件名，或使用：delete <文件名>');
      return askDeleteFile(defaultName);
    }
    const filePath = path.join(__dirname, createdDir, target);
    fs.unlink(filePath, (err) => {
      if (err) {
        console.error('删除失败：', err.message);
        return askDeleteFile(defaultName);
      }
      console.log('文件删除成功，程序退出。');
      rl.close();
      process.exit(0);
    });
  });
}

// 启动
askCreateDir();


